/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package familytree.persistencia.pojos;

import java.util.HashSet;
import java.util.Set;
import org.hibernate.collection.PersistentSet;

/**
 *
 * @author Antonio
 */
public class Pareja {

    private String idPareja;
    private Nodo componente1;
    private Nodo componente2;
    private Set hijos;

    /**Constructor de la clase*/
    public Pareja() {
        hijos = new HashSet();
    }
    /**Metodos observadores y modificadores de la clase*/
    public Nodo getComponente1() {
        return componente1;
    }

    public void setComponente1(Nodo componente1) {
        this.componente1 = componente1;
    }

    public Nodo getComponente2() {
        return componente2;
    }

    public void setComponente2(Nodo componente2) {
        this.componente2 = componente2;
    }

    public Set getHijos() {
        return hijos;
    }

    public void setHijos(PersistentSet hijos) {
        this.hijos = hijos;
    }

    public String getIdPareja() {
        return idPareja;
    }

    public void setIdPareja(String idPareja) {
        this.idPareja = idPareja;
    }

    /**Metodo getOtroMiembro: metodo que dado un nodo de la pareja devuelve el 
     * otro nodo de la pareja.
     * @param Nodo : uno de los nodos pertenecientes a la pareja.
     * @return Nodo: el otro nodo de la pareja que no es el parametro.
      */
    public Nodo getOtroMiembro(Nodo nodo) {
        Nodo otromiembro = null;

        if (nodo.equals(componente1)) {
            otromiembro = componente2;
        } else {
            otromiembro = componente1;
        }

        return otromiembro;

    }

    /**Metodo tieneHijo: metodo que indica si la pareja tiene un hijo pasado
     * como parametro
     * @param Nodo : el nodo hijo que vamos a buscar
     * @return boolean : true si contiene como hijo al nodo pasado como parametro
     * false en otro caso.
     */
    public boolean tieneHijo(Nodo hijo) {

        boolean res = false;

        for (Object o : this.getHijos()) {
            if (((Nodo) o).getIdNodo() == hijo.getIdNodo()) {
                res = true;
                break;  
            }
        }

        return res;

    }
        
   /**Metodo addHijos: metodo que añade al atributo hijos de la clase un nuevo nodo
    * hijo pasado como paremetro.
    * @param Nodo : el hijo que queremos añadir.
    */
    public void addHijos(Nodo hijo) {
        hijos.add(hijo);
        hijo.setPadres(this);
    }
}
